package com.it.schoolhomeos.service;

import com.it.schoolhomeos.entity.Exam;
import org.springframework.data.domain.Page;

import java.time.LocalDate;
import java.util.List;

/**
 * 考试服务接口
 * 
 * 定义考试相关的业务逻辑操作
 */
public interface ExamService {
    
    /**
     * 获取所有考试
     * 
     * @return 考试列表
     */
    List<Exam> getAllExams();
    
    /**
     * 分页获取考试
     * 
     * @param page 页码
     * @param size 每页大小
     * @return 分页的考试列表
     */
    Page<Exam> getExams(int page, int size);
    
    /**
     * 根据ID获取考试
     * 
     * @param id 考试ID
     * @return 考试对象
     */
    Exam getExamById(Long id);
    
    /**
     * 根据名称查找考试
     * 
     * @param name 考试名称
     * @return 考试列表
     */
    List<Exam> findByName(String name);
    
    /**
     * 根据日期查找考试
     * 
     * @param date 考试日期
     * @return 考试列表
     */
    List<Exam> findByDate(LocalDate date);
    
    /**
     * 根据日期范围查找考试
     * 
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @return 考试列表
     */
    List<Exam> findByDateRange(LocalDate startDate, LocalDate endDate);
    
    /**
     * 根据科目查找考试
     * 
     * @param subject 科目
     * @return 考试列表
     */
    List<Exam> findBySubject(String subject);
    
    /**
     * 创建考试
     * 
     * @param exam 考试对象
     * @return 创建后的考试对象
     */
    Exam createExam(Exam exam);
    
    /**
     * 更新考试
     * 
     * @param exam 考试对象
     * @return 更新后的考试对象
     */
    Exam updateExam(Exam exam);
    
    /**
     * 删除考试
     * 
     * @param id 考试ID
     */
    void deleteExam(Long id);
    
    /**
     * 获取考试的科目列表
     * 
     * @param examId 考试ID
     * @return 科目列表
     */
    List<String> getExamSubjects(Long examId);
} 